package com.hanhai.zrb.api.biz.dao.mybatis;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.github.pagehelper.PageInfo;
import com.hanhai.zrb.api.biz.dao.mybatis.base.BaseMapper;
import com.hanhai.zrb.model.fund.Fund;
import com.hanhai.zrb.model.fund.dto.FundDto;
import com.hanhai.zrb.model.fund.dto.FundSearchDto;
import com.hanhai.zrb.model.fund.vo.FundSearchVo;
import com.hanhai.zrb.model.project.Project;

/**
 * 
 * FundMapper数据库操作接口类
 * 
 **/

public interface FundMapper extends BaseMapper{


	/**
	 * 
	 * 查询（根据主键ID查询）
	 * 
	 **/
	Fund  findById (Long id );
	
	FundSearchVo findByFundId(Long id);

	/**
	 * 
	 * 删除（根据主键ID删除）
	 * 
	 **/
	int deleteByPrimaryKey (Long id );

	/**
	 * 
	 * 添加
	 * 
	 **/
	int insert( Fund record );

	/**
	 * 
	 * 添加 （匹配有值的字段）
	 * 
	 **/
	int insertSelective( Fund record );

	/**
	 * 
	 * 修改 （匹配有值的字段）
	 * 
	 **/
	int updateByPrimaryKeySelective( Fund record );

	/**
	 * 
	 * 修改（根据主键ID修改）
	 * 
	 **/
	int updateByPrimaryKey ( Fund record );
	
	
	List<Fund> queryByIdList(List<Long> list);
	
	List<Fund> queryByCondition(FundDto dto);
	
	List<Fund> queryByIntentionIds(@Param("list") List<Long> list,@Param("pushTime") Date pushTime,@Param("state") Integer state);
	List<FundSearchVo> queryFundByFSearchDto(FundSearchDto dto);
	
	List<FundSearchVo> queryByIdListVo(List<Long> list);
	
	void upageStatus(@Param("ids") List<Long> ids, @Param("status") String status, @Param("operatorId") Long operatorId,@Param("date") Date date);
	void deleteFund(@Param("ids") List<Long> ids);
	void updateStatus(@Param("id") Long id, @Param("status") String status, @Param("operatorId") Long operatorId,@Param("fristPushTime") Date fristPushTime,@Param("pushTime") Date pushTime);
	
	List<Fund> queryFundByFundNo(@Param("fundNo")String fundNo,@Param("ids") List<Long> ids);
	
	List<Fund> listAll();

	/**
	 * 查询用户发布的所有项目
	 * @param userId
	 * @return
	 */
	@Select("select count(1) from fund where user_id= #{userId} and state = 203")
	int countByUid(Long userId);

	
	void updatePic(@Param("id") Long id, @Param("pic") String pic);

}